import java.util.*;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: lenovo
 * Date: 2023-02-22
 * Time: 16:02
 */
public class MapTest {
    /**
     * treemap:搜索树
     *
     * @param args
     */
    public static void main1(String[] args) {
        //TreepMap底层是一个搜索树（排好序的树）
        Map<String, Integer> map = new TreeMap<>();
        //map按照key来排序,key不能重复插入(搜索树不能插入重复的值),key如果重复插入,可以对应的value值会覆盖原先的value,同时key也不能为空
        map.put("abc", 10);
        map.put("lbx", 20);
        map.put("eop", 30);
        System.out.println(map);
        System.out.println(map.get("abc"));
        //map里要是不存在key,让他返回一个默认值
        System.out.println("dengui不存在,返回设置的默认值:" + map.getOrDefault("denghui", 100));

        //删除key
        map.remove("lop");
        System.out.println(map);
        //是否包含key
        System.out.println(map.containsKey("lop"));
        //是有包含value
        System.out.println(map.containsValue("90"));
        Set<String> set = map.keySet();
        System.out.println("获取key,key不重复:" + set);
        //获取value
        Collection<Integer> collections = map.values();
        System.out.println("获取value,不同的key可以有相同的value:" + collections);
        System.out.println("/////////////////////");
        Set<Map.Entry<String, Integer>> entryset = map.entrySet();
        System.out.println("entry是map接口内部实现的一个接口,将key和value当成了一个整体" + entryset);
        for (Map.Entry<String, Integer> entry : entryset) {
            System.out.println("遍历set:");
            System.out.println("key:" + entry.getKey() + " value:" + entry.getValue());

        }


    }

    /**
     * hashmap:哈希表 不会像treemap那样排序,而是根据哈数函数来存储;hashmap没有实现sortedMap因此可以存储null值
     */
    public static void main(String[] args) {
        //TreepMap底层是一个搜索树（排好序的树）
        Map<String, Integer> map = new HashMap<>();
        //map按照key来排序,key不能重复插入(搜索树不能插入重复的值),key如果重复插入,可以对应的value值会覆盖原先的value,同时key也不能为空
        map.put("abc", 10);
        map.put("lbx", 20);
        map.put("eop", 30);
        map.put(null,null);
        //这个null将已经存在的null的value值进行覆盖
        map.put(null,999);
        System.out.println("hashmap不会排序"+map);
        System.out.println(map.get("abc"));
        //map里要是不存在key,让他返回一个默认值
        System.out.println("dengui不存在,返回设置的默认值:" + map.getOrDefault("denghui", 100));

        //删除key
        map.remove("lop");
        System.out.println(map);
        //是否包含key
        System.out.println(map.containsKey("lop"));
        //是有包含value
        System.out.println(map.containsValue("90"));
        Set<String> set = map.keySet();
        System.out.println("获取key,key不重复:" + set);
        //获取value
        Collection<Integer> collections = map.values();
        System.out.println("获取value,不同的key可以有相同的value:" + collections);
        System.out.println("/////////////////////");
        Set<Map.Entry<String, Integer>> entryset = map.entrySet();
        System.out.println("entry是map接口内部实现的一个接口,将key和value当成了一个整体" + entryset);
        for (Map.Entry<String, Integer> entry :
                entryset) {
            System.out.println("遍历set:");
            System.out.println("key:" + entry.getKey() + " value:" + entry.getValue());

        }


    }
}

